<?php
class PXFunctions {
	/**
	 * Retorna un nombre aleatrorio de archivo concatenado con la extensión pasada como parametro.
	 * @param $extensionName Extensión del archivo sin punto, ej: doc, ppt, pdf
	 * @return String
	 */
	public static function randFileName($extensionName)
	{
		mt_srand();
		return date('YmdHis').'_'.mt_rand(10,99).'.'.strtolower($extensionName);
	}
	
	/**
	 * Cambia la fecha del formato Español(08/07/2009) al formato de BD(2009-07-08)
	 * @param $date Fecha en formato "08/07/2009"
	 * @return String
	 */
	public static function date2db( $date )
	{
		//Si la fecha viene de la forma 24-11-2009 entonces reemplaza los - por /
		$date = str_replace('-','/',$date);
		
		if(strpos($date,"/")){
			$fec = explode("/",$date);
			return $fec[2]."-".$fec[1]."-".$fec[0];
		}else
			return false;
	}
	
	/**
	 * Convierte un arreglo en una cadena separada con <br>
	 * @param $data es el array() que se vá a convertir en texto
	 * @return String
	 */
	public static function array2text( $data )
	{
		$text = '';
		foreach($data as $row)
			$text .= '-'.$row[0].'<br>';
		
		return $text;
	}
	
	/**
	 * Trunca un texto largo para cuando se necesita solo una parte
	 * @param $string Texto que va a ser truncado
	 * @param $length Este determina para cuantos carácteres truncar.
	 * @param $etc Este es el texto para adicionar si el truncamiento ocurre. La longitud NO se incluye para la logitud del truncamiento
	 * @param $break_words Este determina cuando truncar o no o al final de una palabra(false), o un carácter exacto(true).
	 * @param $middle Este determina cuando ocurre el truncamiento al final de la cadena(false), o en el centro de la cadena(true). Nota cuando este es true, entonces la palabra limite es ignorada.
	 * @return String
	 */
	public static function truncate($string, $length = 80, $etc = '...',$break_words = false, $middle = false)
	{
	    if ($length == 0)
	        return '';
	
	    if (strlen($string) > $length) {
	        $length -= strlen($etc);
	        if (!$break_words && !$middle) {
	            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
	        }
	        if(!$middle) {
	            return substr($string, 0, $length).$etc;
	        } else {
	            return substr($string, 0, $length/2) . $etc . substr($string, -$length/2);
	        }
	    } else {
	        return $string;
	    }
	}
	/**
	 * Le da formato a las variables que sirven en la url semantica.
	 * @param $str es la cadena que queremos utilizar en la url
	 * @return String
	 */
	public static function formatUrl($str)
	{
	   if ( @preg_match ('/.+/u', $str) )
			$str = utf8_decode($str);
			
		$str = htmlentities($str);
		$str = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde);/','$1',$str);
		$str = html_entity_decode($str);
		$str = strtolower($str);
		$str= str_replace("ç","c",$str);
		$str_partes = split("[ =()/\'\"\:\+\!\“\”\‘\’\¡\¿\?\º\,\;\$\&\#\%\´\·\.\@\«\»]",trim($str));
		
		$str = implode("-",$str_partes);
		$str = preg_replace('@[\W]+@','-',$str);
		$str = preg_replace('@[-]*[^A-Za-z0-9._,]@','-',$str);
		$str = preg_replace('@^[-]@','',$str);
		$str = preg_replace('@([-])$@','',$str);
		
		$str = strtolower($str);
		return $str;
	}	
}